Micron Document
NexusPi Git Node


Displaying Raw • Download

lib/microReticulum/src/Utilities/tlsf.h v1.0.7 (59784a34) Text, 3.52 KB

Tff7b72#Tff7b72ifndef INCLUDED_tlsf
Tff7b72#Tff7b72define INCLUDED_tlsf

T8b949e/*
** Two Level Segregated Fit memory allocator, version 3.1.
** Written by Matthew Conte
** http://tlsf.baisoku.org
**
** Based on the original documentation by Miguel Masmano:
** http://www.gii.upv.es/tlsf/main/docs
**
** This implementation was written to the specification
** of the document, therefore no GPL restrictions apply.
**
** Copyright (c) 2006-2016, Matthew Conte
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in the
** documentation and/or other materials provided with the distribution.
** * Neither the name of the copyright holder nor the
** names of its contributors may be used to endorse or promote products
** derived from this software without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
** DISCLAIMED. IN NO EVENT SHALL MATTHEW CONTE BE LIABLE FOR ANY
** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

Tff7b72#Tff7b72include T8b949e<stddef.h>

Tff7b72#Tff7b72if defined(__cplusplus)
Tff7b72extern Ta5d6ff"Ta5d6ffCTa5d6ff" Tb4b4b4{
Tff7b72#Tff7b72endif

T8b949e/* tlsf_t: a TLSF structure. Can contain 1 to N pools. */
T8b949e/* pool_t: a block of memory that TLSF can manage. */
Tff7b72typedef Tffa657voidTff7b72* Te6edf3tlsf_tTb4b4b4;
Tff7b72typedef Tffa657voidTff7b72* Te6edf3pool_tTb4b4b4;

T8b949e/* Create/destroy a memory pool. */
Te6edf3tlsf_t Td2a8fftlsf_createTb4b4b4(Tffa657voidTff7b72* Te6edf3memTb4b4b4)Tb4b4b4;
Te6edf3tlsf_t Td2a8fftlsf_create_with_poolTb4b4b4(Tffa657voidTff7b72* Te6edf3memTb4b4b4, Tffa657size_t Te6edf3bytesTb4b4b4)Tb4b4b4;
Tffa657void Td2a8fftlsf_destroyTb4b4b4(Te6edf3tlsf_t Te6edf3tlsfTb4b4b4)Tb4b4b4;
Te6edf3pool_t Td2a8fftlsf_get_poolTb4b4b4(Te6edf3tlsf_t Te6edf3tlsfTb4b4b4)Tb4b4b4;

T8b949e/* Add/remove memory pools. */
Te6edf3pool_t Td2a8fftlsf_add_poolTb4b4b4(Te6edf3tlsf_t Te6edf3tlsfTb4b4b4, Tffa657voidTff7b72* Te6edf3memTb4b4b4, Tffa657size_t Te6edf3bytesTb4b4b4)Tb4b4b4;
Tffa657void Td2a8fftlsf_remove_poolTb4b4b4(Te6edf3tlsf_t Te6edf3tlsfTb4b4b4, Te6edf3pool_t Te6edf3poolTb4b4b4)Tb4b4b4;

T8b949e/* malloc/memalign/realloc/free replacements. */
Tffa657voidTff7b72* Td2a8fftlsf_mallocTb4b4b4(Te6edf3tlsf_t Te6edf3tlsfTb4b4b4, Tffa657size_t Te6edf3bytesTb4b4b4)Tb4b4b4;
Tffa657voidTff7b72* Td2a8fftlsf_memalignTb4b4b4(Te6edf3tlsf_t Te6edf3tlsfTb4b4b4, Tffa657size_t Te6edf3alignTb4b4b4, Tffa657size_t Te6edf3bytesTb4b4b4)Tb4b4b4;
Tffa657voidTff7b72* Td2a8fftlsf_reallocTb4b4b4(Te6edf3tlsf_t Te6edf3tlsfTb4b4b4, Tffa657voidTff7b72* Te6edf3ptrTb4b4b4, Tffa657size_t Te6edf3sizeTb4b4b4)Tb4b4b4;
Tffa657void Td2a8fftlsf_freeTb4b4b4(Te6edf3tlsf_t Te6edf3tlsfTb4b4b4, Tffa657voidTff7b72* Te6edf3ptrTb4b4b4)Tb4b4b4;

T8b949e/* Returns internal block size, not original request size */
Tffa657size_t Td2a8fftlsf_block_sizeTb4b4b4(Tffa657voidTff7b72* Te6edf3ptrTb4b4b4)Tb4b4b4;

T8b949e/* Overheads/limits of internal structures. */
Tffa657size_t Td2a8fftlsf_sizeTb4b4b4(Tffa657voidTb4b4b4)Tb4b4b4;
Tffa657size_t Td2a8fftlsf_align_sizeTb4b4b4(Tffa657voidTb4b4b4)Tb4b4b4;
Tffa657size_t Td2a8fftlsf_block_size_minTb4b4b4(Tffa657voidTb4b4b4)Tb4b4b4;
Tffa657size_t Td2a8fftlsf_block_size_maxTb4b4b4(Tffa657voidTb4b4b4)Tb4b4b4;
Tffa657size_t Td2a8fftlsf_pool_overheadTb4b4b4(Tffa657voidTb4b4b4)Tb4b4b4;
Tffa657size_t Td2a8fftlsf_alloc_overheadTb4b4b4(Tffa657voidTb4b4b4)Tb4b4b4;

T8b949e/* Debugging. */
Tff7b72typedef Tffa657void Tb4b4b4(Tff7b72*Te6edf3tlsf_walkerTb4b4b4)Tb4b4b4(Tffa657voidTff7b72* Te6edf3ptrTb4b4b4, Tffa657size_t Te6edf3sizeTb4b4b4, Tffa657int Te6edf3usedTb4b4b4, Tffa657voidTff7b72* Te6edf3userTb4b4b4)Tb4b4b4;
Tffa657void Td2a8fftlsf_walk_poolTb4b4b4(Te6edf3pool_t Te6edf3poolTb4b4b4, Te6edf3tlsf_walker Te6edf3walkerTb4b4b4, Tffa657voidTff7b72* Te6edf3userTb4b4b4)Tb4b4b4;
T8b949e/* Returns nonzero if any internal consistency check fails. */
Tffa657int Td2a8fftlsf_checkTb4b4b4(Te6edf3tlsf_t Te6edf3tlsfTb4b4b4)Tb4b4b4;
Tffa657int Td2a8fftlsf_check_poolTb4b4b4(Te6edf3pool_t Te6edf3poolTb4b4b4)Tb4b4b4;

Tff7b72#Tff7b72if defined(__cplusplus)
Tb4b4b4}Tb4b4b4;
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72endif

Served by rngit 1.4.2 - Generated in 0.01s